package com.andkrup.easygame.game.objects {
	import com.andkrup.easygame.game.objects.armor.IHelmet;	
	import com.andkrup.easygame.game.objects.armor.IBodyArmor;	
	import com.andkrup.easygame.game.objects.weapons.ISidearm;	
	import com.andkrup.easygame.game.objects.weapons.IWeapon;	
	
	/**
	 * @author Andkrup
	 */
	public interface ICharacter extends ITarget{
		function set id(value:uint):void;
		function get id():uint;
		function set name(value:String):void;
		function get name():String;
		function set gender(value:String):void;
		function get gender():String;
		function set primaryWeapon(value:IWeapon):void;
		function get primaryWeapon():IWeapon;
		function set sidearm(value:ISidearm):void;
		function get sidearm():ISidearm;
		function set bodyArmor(value:IBodyArmor):void;
		function get bodyArmor():IBodyArmor;
		function set helmet(value:IHelmet):void;
		function get helmet():IHelmet;
		function set primaryClips(value:uint):void;
		function get primaryClips():uint;
		function set sidearmClips(value:uint):void;
		function get sidearmClips():uint;
		function addEquipment(object:Object, amount:uint = 1):void;
		function removeEquipment(object:Object, amount:uint = 1):Boolean;
		function get equipment():Array;
		function canEquip(object:Object, amount:uint = 1):Boolean;
		/**
		 * Describes a characters basic properties, such as speed, strength, awareness, reactions, stamina, luck, etc...
		 */
		function set baseProps(value:Object):void;
		function get baseProps():Object;
		/**
		 * Describes a characters learned skills, such as markmanship, driving, lock-picking, etc
		 */
		function set skills(value:Object):void;
		function get skills():Object;
		/**
		 * Describes a set of properties gained throughout the game, rank, experience-points, mission-count, kills, etc
		 */
		function set experiences(value:Object):void;
		function get experiences():Object;
	}
}
